package com.ztr.conversion;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class PdfToWordConverter {
    /**
     * 主函数，用于从PDF文件中提取文本并保存为DOCX文件。
     *
     * @param args 命令行参数，未使用
     */
    public static void main(String[] args) {
        // 定义PDF文件和输出的DOCX文件的路径
        String pdfFilePath = "D:\\1.pdf";
        String wordFilePath = "D:\\1.docx";

        try {
            // 加载PDF文档并提取文本
            PDDocument pdfDocument = PDDocument.load(new File(pdfFilePath));
            // 创建PDF文本提取器
            PDFTextStripper pdfStripper = new PDFTextStripper();
            // 从PDF中提取文本
            String text = pdfStripper.getText(pdfDocument);
            // 关闭PDF文档
            pdfDocument.close();

            // 创建一个新的Word文档
            XWPFDocument document = new XWPFDocument();

            // 在DOCX文档中创建一个新段落
            XWPFParagraph paragraph = document.createParagraph();
            // 在段落中创建一个文本运行，并设置提取的PDF文本
            XWPFRun run = paragraph.createRun();
            run.setText(text);

            // 将DOCX文档写入文件
            try (FileOutputStream out = new FileOutputStream(wordFilePath)) {
                document.write(out);
            }

            // 关闭DOCX文档
            document.close();

            // 输出成功提示信息
            System.out.println("Word文档创建成功!");
        } catch (IOException e) {
            // 打印异常堆栈跟踪
            e.printStackTrace();
        }
    }

}
